有效解决“该文件没有与之关联的应用来执行操作,请安装一个程序,若已安装程序,请在默认程序控制面板中创建关联”问题 |
您所在的位置:网站首页 › 您没有安装可用于执行video mp4类型文件的应用程序 › 有效解决“该文件没有与之关联的应用来执行操作,请安装一个程序,若已安装程序,请在默认程序控制面板中创建关联”问题 |
负数在计算机中的存储方式
做而论道_CS: 由补码换算到十进制数,也是极其简单的事! 你只需记住:【补码首位的权,是负数】。 一般的八位二进制数,各个位的权是: 128、64、32、16、8、4、2、1。 如果是八位的补码,各个位的权则是: -128、64、32、16、8、4、2、1。 例如,有一个补码是:1110 0001, 它代表的十进制就是:-128 + 64 + 32 + 1 = -31。 如果,换另一个补码:0110 0001, 它代表的十进制数是:0 + 64 + 32 + 1 = +97。 仅仅使用【进制转换】,不就完事了嘛? 原码反码取反加一? 这些,根本就用不着啊! -------------------------- 补码的来历,仅仅是在于:你如何处理进位。 补码,并不是来自: 机器数真值符号位原码反码正数三码相同负数取反加一符号位不变模同余。。。 计算机专家,如果有小学毕业的水平,就不会费这么大的事来解释补码! 唉,老外数学不好、算术不灵,由此可见一斑。 负数在计算机中的存储方式做而论道_CS: 八位二进制数,总共有 256 个数值。 用其中一半 (128 个) 代表负数,即:-1 ~ -128; 剩下的一半 (128 个) 保持原值,即: 0 ~ +127。 这些二进制数,就被 “计算机专家” 称为 “补码” 了。 其实,它们仍然是数字,根本就不是什么 “码”! 那么,八位补码的表示范围,就是:-128 ~ +127。 128 个负数,与其八位的补码,对应如下: ================== 负数 补码 -1 1111 1111 = 255 (十进制) -2 1111 1110 = 254 (十进制) -3 1111 1101 = 253 (十进制) 。。。。 。。。。 -128 1000 0000 = 128 (十进制) ================== 你如果小学毕了业,你就能看出它们的关系: [负数]补码 = 256 + 负数。 通用公式: [负数]补码 = 2^n + 负数。 n 是二进制数的位数。 求补码,就是这么简单! 例如,-27 的八位补码是什么? 解: [-27 ]补 = 256 - 27 = 229, 229 = 1110 0101 (二进制)。 补码,这不就求出来了吗! 符号位原码反码取反加一,有用吗? 都是用不着的! 由此可知: 补码,与原码反码,并无任何关系。 补码的范围,与它们的范围对不上,也不奇怪。 负数在计算机中的存储方式做而论道_CS: 计算机中,并没有什么符号位。 计算机中,也没有原码反码补码。 计算机中,只有二进制数字。 八位二进制数字的范围是: 0000 0000 ~ 1111 1111。 相当于十进制的 0 ~ 255。 作为数字来说,二进制数、十进制数,本质都是一样的。 用数字,代表其它的,才叫做 “码”。 如:学号、车牌门牌、电话 ... 计算机中,只有加法器,而且位数是固定的。 最简单的是: 八位二进制 + 八位二进制 = (进位) 八位的和。 当你忽略进位,只取八位的结果,此次加法,就是减法运算。 用十进制来说,比较容易理解。 例如,两位十进制,范围是:0 ~ 99。 (最大值是 99。) 那么:25 - 1 = 24 25 + 99 = (一百) 24 如果你舍弃了进位,这两种算法,功能就是相同的! 即,舍弃了进位: +99,就是-1 了、 加法,也就是减法运算了。 你有疑问吗? ------------------ 对于八位二进制数,其数值范围是: 0000 0000 ~ 1111 1111, 也就是十进制的:0 ~ 255。 此处的最大值 255,也就可以当做-1 使用! 如 13 - 1 = 12,八位机将如下计算: 0000 1101 + 1111 1111 --------- (进位1) 0000 1100 如果舍弃了进位,本次加法,就实现了减法运算! 你有疑问吗? -------------------------- 这个二进制数 1111 1111,它到底是 255、还是-1 ? 它究竟是个什么东西? 这与 “符号位原码反码” 一丁点关系都没有! 它只取决于你的算法。 你保留进位,它就是 255 (即正数)。 你舍弃进位,它就是-1 (即负数)。 也就是说,1111 1111 的值,是正数还是代表负数? 取决于【你如何看待进位。】 并不是取决于什么 “符号位” ! 懂吗? C语言中&, |, ^, ~ 位运算符2301_76990779: ~0000 0000 0000 0000 =1111 1111 1111 1111 C语言的话第一位是符号位(如果不是无符号型) 1为负0为正 而负数的存储是用补码形式也就是按位~后加1 如果是1 二进制就是 0000 0000 0000 0001 ~= 1111 1111 1111 1110 补码加1 就是:1111 1111 1111 1111这就是为什么-1是16位均为1 但是你~0并不会用补码而是直接将所有位按位取反但结果依然是1111 1111 1111 1111=-1 C语言中&, |, ^, ~ 位运算符2301_76990779: 所有位都为0取反 就是所有位都是1了 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |